home *** CD-ROM | disk | FTP | other *** search
Text File | 2011-10-17 | 38.0 KB | 1,206 lines |
- package engine
- {
- import copy.CopyBank;
- import engine.dynamicObjects.*;
- import engine.levelData.*;
- import engine.scenery.Scene_Data;
- import flash.display.BitmapData;
- import flash.display.Sprite;
-
- public class WorldScene extends Sprite
- {
-
- private static var _instance:WorldScene;
-
-
- private var _sceneryMGObjects:Array;
-
- private var _purgeArray:Array;
-
- private var _fxObjects:Array;
-
- private var _mainInitOnce:Boolean = false;
-
- private var _motionObjects:Array;
-
- private var _ringCrashes:Number = 0;
-
- private var SCORE:Object;
-
- private var _hintTarget:*;
-
- private var _trackItems:Array;
-
- private var _sceneData:Object;
-
- private var _planeShadow:PlaneShadow;
-
- private var _tentacleObjects:Array;
-
- private var _sceneBitmapData:BitmapData;
-
- private var _endLifeTimer:Number = 0;
-
- private var _sceneryFGObjects:Array;
-
- private var _sceneCamera:SceneCamera;
-
- private var _missionDetails:Object;
-
- private var _cages:Array;
-
- private var _endLife:Boolean = false;
-
- private var _repeatMissions:Boolean = false;
-
- private var _ringFlyThroughs:Number = 0;
-
- private var _bonusScore:Number = 0;
-
- private var _plane:Plane;
-
- private var CON:Object;
-
- private var _hintTimer:Number = 0;
-
- private var _gameplayObjects:Array;
-
- private var _indians:Array;
-
- public function WorldScene()
- {
- _hintTimer = 0;
- _ringFlyThroughs = 0;
- _ringCrashes = 0;
- _bonusScore = 0;
- _endLife = false;
- _endLifeTimer = 0;
- _mainInitOnce = false;
- _repeatMissions = false;
- CON = {
- "WORLD_WIDTH":4500,
- "WORLD_HEIGHT":800,
- "FLOOR_Y":680,
- "SC_FOCAL_LENGTH":4,
- "DRAW_METHOD":{
- "PIXEL":0,
- "FAST":1,
- "SLOW":2
- }
- };
- SCORE = {
- "CAGE":7500,
- "RING":5000,
- "TABLET":2500,
- "INDIAN":1000
- };
- super();
- _instance = this;
- _gameplayObjects = new Array();
- _fxObjects = new Array();
- _motionObjects = new Array();
- _tentacleObjects = new Array();
- _cages = new Array();
- _indians = new Array();
- _purgeArray = new Array();
- _trackItems = new Array();
- }
-
- public static function get Instance() : WorldScene
- {
- return _instance;
- }
-
- public function createProjectile(sourceObj:*, pObj:*) : *
- {
- pObj.x = sourceObj.x;
- pObj.y = sourceObj.y;
- pObj.z = sourceObj.z;
- pObj.launchAt(_plane,_sceneCamera.CamLoc);
- _gameplayObjects.push(pObj);
- }
-
- private function fireTrackItems() : *
- {
- var combinedItems:Array = null;
- var i:Number = NaN;
- var matchedItem:* = undefined;
- var j:* = undefined;
- combinedItems = new Array();
- i = 0;
- for(i = 0; i < _trackItems.length; i++)
- {
- trace("found item to fire: " + _trackItems[i]);
- matchedItem = null;
- for(j = 0; j < combinedItems.length; j++)
- {
- if(combinedItems[j].Name == _trackItems[i])
- {
- matchedItem = combinedItems[j];
- break;
- }
- }
- if(matchedItem)
- {
- ++matchedItem.Count;
- }
- else
- {
- combinedItems.push({
- "Name":_trackItems[i],
- "Count":1
- });
- }
- }
- for(i = 0; i < combinedItems.length; i++)
- {
- Main.Instance.Tracker.trackEvent("NATM2_Flight","miscellaneous",combinedItems[i].Name,combinedItems[i].Count);
- }
- _trackItems = new Array();
- }
-
- public function get Cages() : Array
- {
- return _cages;
- }
-
- public function setMissionDetails(missionObj:*) : *
- {
- _missionDetails = missionObj;
- }
-
- public function displayBonusScore() : *
- {
- var scoreObj:ScoreObject = null;
- if(_bonusScore > 0)
- {
- scoreObj = new ScoreObject(_bonusScore);
- scoreObj.x = _plane.x + -_sceneCamera.CamLoc.x * (_plane.z - 1);
- scoreObj.y = _plane.y - 0 + -_sceneCamera.CamLoc.y * (_plane.z - 1);
- scoreObj.z = 1;
- scoreObj.vx = 0;
- scoreObj.vy = -0.2;
- _fxObjects.push(scoreObj);
- Engine.Instance.addScore(_bonusScore);
- }
- }
-
- public function dropBomb() : *
- {
- var bomb:* = undefined;
- bomb = new Bomb();
- bomb.x = _plane.x + -_sceneCamera.CamLoc.x * (_plane.z - 1);
- bomb.y = _plane.y + 20 + -_sceneCamera.CamLoc.y * (_plane.z - 1);
- bomb.vx = _plane.vx / 2;
- bomb.vy = _plane.vy / 4;
- bomb.z = 1;
- _gameplayObjects.splice(0,0,bomb);
- }
-
- public function get SceneData() : Object
- {
- return _sceneData;
- }
-
- public function get MotionObjects() : Array
- {
- return _motionObjects;
- }
-
- public function createBurningEmbers(obj:*) : *
- {
- var ember:* = undefined;
- ember = new Ember();
- ember.x = obj.x - 28;
- ember.y = obj.y - 5;
- ember.z = obj.z;
- ember.vx = -7;
- ember.vy = -2;
- _gameplayObjects.push(ember);
- ember = new Ember();
- ember.x = obj.x - 28;
- ember.y = obj.y - 5;
- ember.z = obj.z;
- ember.vx = 7;
- ember.vy = -2;
- _gameplayObjects.push(ember);
- ember = new Ember();
- ember.x = obj.x - 28;
- ember.y = obj.y - 5;
- ember.z = obj.z;
- ember.vx = Math.random() * 0.2 - 0.1;
- ember.vy = -8;
- _gameplayObjects.push(ember);
- }
-
- public function lobProjectile(sourceObj:*, pObj:*) : *
- {
- pObj.x = sourceObj.x;
- pObj.y = sourceObj.y;
- pObj.z = sourceObj.z;
- pObj.lob(_plane,_sceneCamera.CamLoc);
- _gameplayObjects.push(pObj);
- }
-
- public function clearMissionElements() : *
- {
- var i:* = undefined;
- var removeOk:Boolean = false;
- _fxObjects.splice(0,_fxObjects.length);
- _tentacleObjects.splice(0,_tentacleObjects.length);
- _cages.splice(0,_cages.length);
- _indians.splice(0,_indians.length);
- _purgeArray.splice(0,_purgeArray.length);
- for(i = 0; i < _gameplayObjects.length; i++)
- {
- removeOk = true;
- if(_gameplayObjects[i] is Plane || _gameplayObjects[i] is PlaneShadow || _gameplayObjects[i] is SquidInkEmitter)
- {
- removeOk = false;
- }
- if(removeOk)
- {
- _gameplayObjects.splice(i,1);
- i--;
- }
- }
- _ringFlyThroughs = 0;
- _ringCrashes = 0;
- }
-
- public function get ActiveBombs() : Array
- {
- return new Array();
- }
-
- public function addRingScore(obj:*) : *
- {
- var multiplyer:Number = NaN;
- var scoreObj:ScoreObject = null;
- ++_ringFlyThroughs;
- if(_ringFlyThroughs > 5)
- {
- Engine.Instance.setPopupMessage(CopyBank.Instance.RingCombo);
- _ringFlyThroughs = 0;
- queueTrackItem("RingCombos");
- }
- multiplyer = 1;
- if(!obj.HasCollided)
- {
- multiplyer = 3;
- queueTrackItem("RingsCollectedFlawlessly");
- }
- else
- {
- queueTrackItem("RingsCollectedBadly");
- }
- Engine.Instance.addScore(SCORE.RING * multiplyer);
- scoreObj = new ScoreObject(SCORE.RING * multiplyer);
- scoreObj.s = 1;
- scoreObj.x = obj.x;
- scoreObj.y = obj.y;
- scoreObj.z = obj.z;
- scoreObj.vy = -1.45;
- _fxObjects.push(scoreObj);
- registerObjectivePoint("Ring");
- }
-
- public function initStaticElements() : *
- {
- var bg:BitmapData = null;
- var sub_bg_city:BitmapData = null;
- var sub_bg_arch:BitmapData = null;
- var sub_bg_space:BitmapData = null;
- var inkEmitter:* = undefined;
- var alCapone:* = undefined;
- var rocket:* = undefined;
- addEventListener("enterFrame",onWorldSceneEnterFrame);
- _sceneryMGObjects = new Array();
- _sceneryFGObjects = new Array();
- bg = new scene_background(4500,568);
- sub_bg_city = new SBG_City(606,408);
- sub_bg_arch = new SBG_Arch(326,484);
- sub_bg_space = new SBG_Space(1019,451);
- placeScenery();
- inkEmitter = new SquidInkEmitter();
- inkEmitter.x = 1268;
- inkEmitter.y = 331;
- _motionObjects.push(inkEmitter);
- _sceneryMGObjects.push(inkEmitter);
- alCapone = new AlCapone();
- alCapone.x = 1974;
- alCapone.y = 391;
- _motionObjects.push(alCapone);
- _sceneryMGObjects.push(alCapone);
- rocket = new Rocket();
- rocket.x = 3566;
- rocket.y = 362;
- _motionObjects.push(rocket);
- _sceneryMGObjects.push(rocket);
- _plane = new Plane();
- _gameplayObjects.push(_plane);
- _sceneCamera = new SceneCamera();
- addChild(_sceneCamera);
- _sceneCamera.init();
- _planeShadow = new PlaneShadow();
- _gameplayObjects.push(_planeShadow);
- _sceneCamera.Subject = _plane;
- _sceneData = {
- "bg":bg,
- "sub_bg_city":sub_bg_city,
- "sub_bg_arch":sub_bg_arch,
- "sub_bg_space":sub_bg_space,
- "GameplayObjects":_gameplayObjects,
- "FXObjects":_fxObjects,
- "SceneryMGObjects":_sceneryMGObjects,
- "SceneryFGObjects":_sceneryFGObjects
- };
- }
-
- private function setGoalHint() : *
- {
- if(xGreaterThanPlane(_hintTarget))
- {
- Engine.Instance.setPopupMessage(CopyBank.Instance.GoalRight);
- }
- else
- {
- Engine.Instance.setPopupMessage(CopyBank.Instance.GoalLeft);
- }
- }
-
- public function get SceneryFGObjects() : Array
- {
- return _sceneryFGObjects;
- }
-
- private function placeScenery() : *
- {
- var sd:Scene_Data = null;
- sd = new Scene_Data();
- sd.populate();
- }
-
- public function createFX(sourceObj:*, fObj:*) : *
- {
- fObj.x = sourceObj.x;
- fObj.y = sourceObj.y;
- fObj.z = sourceObj.z;
- _fxObjects.push(fObj);
- }
-
- public function generateSmokeParticles(obj:*, num:Number = 0) : *
- {
- var i:* = undefined;
- var sm:* = undefined;
- for(i = 0; i < num; i++)
- {
- sm = new SmokePuff2();
- sm.x = obj.x;
- sm.y = obj.y;
- sm.z = obj.z;
- sm.vy = Math.random() * -4 - 2;
- sm.vx = Math.random() * 0.4 - 0.2;
- _fxObjects.push(sm);
- }
- }
-
- public function clearGPObject(obj:*) : *
- {
- _purgeArray.push(obj);
- }
-
- private function queueTrackItem(str:String) : *
- {
- }
-
- public function generatePlaneExplosion(obj:*, extraShrap:Number = 0) : *
- {
- var sNum:Number = NaN;
- var i:Number = NaN;
- var sm:* = undefined;
- i = 0;
- sNum = Math.floor(Math.random() * 4) + 1 + extraShrap;
- for(i = 0; i < sNum; i++)
- {
- sm = new SmokePuff2();
- sm.x = _plane.x;
- sm.y = _plane.y;
- sm.z = _plane.z;
- _fxObjects.push(sm);
- }
- generateExplosion(obj,extraShrap);
- }
-
- public function xGreaterThanPlane(obj:*) : Boolean
- {
- var oX:Number = NaN;
- var pX:Number = NaN;
- oX = obj.x + -_sceneCamera.CamLoc.x * obj.z;
- pX = _plane.x + -_sceneCamera.CamLoc.x * _plane.z;
- if(oX > pX)
- {
- return true;
- }
- return false;
- }
-
- public function get TentacleObjects() : Array
- {
- return _tentacleObjects;
- }
-
- public function generateSparks(obj:*, extraShrap:Number = 0) : *
- {
- var sNum:Number = NaN;
- var i:Number = NaN;
- var spark:* = undefined;
- var sparkZ:Number = NaN;
- i = 0;
- sNum = Math.floor(Math.random() * 75) + 25 + extraShrap;
- for(i = 0; i < sNum; i++)
- {
- spark = new SparkSmall();
- sparkZ = 2 + (Math.random() * 4 - 1);
- spark.x = obj.x + 20 + -_sceneCamera.CamLoc.x * (obj.z - sparkZ);
- spark.y = obj.y + 20 + -_sceneCamera.CamLoc.y * (obj.z - sparkZ);
- spark.z = sparkZ;
- _fxObjects.push(spark);
- }
- }
-
- public function get PlaneObj() : Plane
- {
- return _plane;
- }
-
- public function get Indians() : Array
- {
- return _indians;
- }
-
- public function generateExplosion(obj:*, extraShrap:Number = 0) : *
- {
- var sNum:Number = NaN;
- var i:Number = NaN;
- var explosion:* = undefined;
- var spark:* = undefined;
- i = 0;
- sNum = Math.floor(Math.random() * 15) + 15 + extraShrap;
- for(i = 0; i < sNum; i++)
- {
- spark = new Spark();
- spark.x = obj.x;
- spark.y = obj.y;
- spark.z = obj.z;
- _fxObjects.push(spark);
- }
- explosion = new Explosion();
- explosion.x = obj.x;
- explosion.y = obj.y;
- explosion.z = obj.z;
- _fxObjects.push(explosion);
- }
-
- public function addGPObject(obj:*) : *
- {
- _gameplayObjects.push(obj);
- }
-
- public function respawn() : *
- {
- trace("respawn");
- _plane.init();
- _planeShadow.vis = true;
- _endLife = false;
- _endLifeTimer = 0;
- }
-
- public function createEmberTrailParticle(obj:*) : *
- {
- var sm:* = undefined;
- sm = new SmokePuff2();
- sm.x = obj.x - 10 - obj.vx;
- sm.y = obj.y - 3 - obj.vy;
- sm.z = obj.z;
- sm.vy = 0.05;
- sm.vx = Math.random() * 0.1 - 0.05;
- _fxObjects.push(sm);
- }
-
- public function get MissionDetails() : Object
- {
- if(!_missionDetails)
- {
- return {"StartLoc":{
- "x":-1,
- "y":-1
- }};
- }
- return _missionDetails;
- }
-
- public function addGPObjectAt(obj:*, index:*) : *
- {
- _gameplayObjects.splice(index,0,obj);
- }
-
- public function createCaponeCork(obj:*) : *
- {
- var cork:* = undefined;
- cork = new Cork();
- cork.x = obj.x - 40;
- cork.y = obj.y - 4;
- cork.z = obj.z;
- _gameplayObjects.push(cork);
- }
-
- public function collisionRegistered(obj:*) : *
- {
- var i:Number = NaN;
- var j:Number = NaN;
- var scoreObj:ScoreObject = null;
- var sNum:Number = NaN;
- var inkSplatter:* = undefined;
- i = 0;
- j = 0;
- if(obj is GoalRing)
- {
- obj.flyThrough();
- }
- if(obj is GoalRing_FG)
- {
- if(!obj.parentRing.Collision)
- {
- obj.parentRing.collide("fg",_plane.r);
- generatePlaneExplosion(obj);
- Main.Instance.playSound("hitRing");
- queueTrackItem("RingsCollided");
- _plane.damage(8);
- _plane.deflectMinor();
- ++_ringCrashes;
- _ringFlyThroughs = 0;
- if(_ringCrashes > 4)
- {
- Engine.Instance.setPopupMessage(CopyBank.Instance.CrashTaunt);
- }
- }
- }
- if(obj is GoalRing_BG)
- {
- if(!obj.parentRing.Collision)
- {
- obj.parentRing.collide("bg",_plane.r);
- generatePlaneExplosion(obj);
- Main.Instance.playSound("hitRing");
- queueTrackItem("RingsCollided");
- _plane.damage(8);
- _plane.deflectMinor();
- ++_ringCrashes;
- _ringFlyThroughs = 0;
- if(_ringCrashes > 4)
- {
- Engine.Instance.setPopupMessage(CopyBank.Instance.CrashTaunt);
- }
- }
- }
- if(obj is Spear)
- {
- _plane.damage(18);
- _purgeArray.push(obj);
- generatePlaneExplosion(obj);
- queueTrackItem("SpearCollisions");
- Main.Instance.playSound("hit");
- if(Math.random() > 0.75)
- {
- Engine.Instance.setPopupMessage(CopyBank.Instance.PlaneHit);
- }
- }
- if(obj is Cork && _plane.TempDamage <= 1 && _plane.Life > 0)
- {
- _plane.damage(18);
- _plane.deflectMinor();
- generatePlaneExplosion(obj);
- queueTrackItem("CorkCollisions");
- Main.Instance.playSound("hit");
- if(Math.random() > 0.75)
- {
- Engine.Instance.setPopupMessage(CopyBank.Instance.PlaneHit);
- }
- }
- if(obj is Podium && _plane.Life > 0)
- {
- _plane.deflectUp();
- _plane.damage(25);
- generatePlaneExplosion(_plane);
- Main.Instance.playSound("hit");
- }
- if(obj is TabletPiece && _plane.Life > 0)
- {
- generateSparks(obj);
- Engine.Instance.addScore(SCORE.TABLET);
- _purgeArray.push(obj);
- Main.Instance.playSound("pickup");
- queueTrackItem("TabletsCollected");
- scoreObj = new ScoreObject(SCORE.TABLET);
- scoreObj.s = 0.75;
- scoreObj.x = obj.x;
- scoreObj.y = obj.y;
- scoreObj.z = obj.z;
- scoreObj.vy = -1.45;
- _fxObjects.push(scoreObj);
- registerObjectivePoint("Tablet");
- }
- if(obj is FuelIcon)
- {
- _plane.addFuel(50);
- _purgeArray.push(obj);
- generateSparks(obj,-20);
- Main.Instance.playSound("pickup");
- queueTrackItem("FuelCollected");
- Engine.Instance.setPopupMessage(CopyBank.Instance.FuelCollect);
- }
- if(obj is TentacleSegment)
- {
- if(_plane.TempDamage <= 1 && _plane.Life > 0)
- {
- generatePlaneExplosion(_plane);
- _plane.damage(10);
- _plane.deflectMinor();
- queueTrackItem("TentacleCollisions");
- Main.Instance.playSound("hit");
- }
- }
- if(obj is Rocket)
- {
- if(_plane.TempDamage <= 1 && _plane.Life > 0 && Boolean(obj.Firing))
- {
- generatePlaneExplosion(_plane);
- _plane.damage(25);
- _plane.deflectMinor();
- }
- }
- if(obj is Ember)
- {
- if(_plane.TempDamage <= 1 && _plane.Life > 0)
- {
- generatePlaneExplosion(_plane);
- _plane.damage(15);
- _plane.deflectMinor();
- Main.Instance.playSound("hit");
- }
- }
- if(obj is InkBlob)
- {
- if(_plane.Ink <= 0 && _plane.Life > 0)
- {
- _plane.inkHit();
- Main.Instance.playSound("ink");
- queueTrackItem("InkCollisions");
- obj.vx *= -0.2;
- obj.vy *= 0.5;
- sNum = Math.floor(Math.random() * 15) + 40;
- for(i = 0; i < sNum; i++)
- {
- inkSplatter = new InkSplatterParticle();
- inkSplatter.x = _plane.x;
- inkSplatter.y = _plane.y;
- inkSplatter.z = _plane.z;
- inkSplatter.vx += _plane.vx * 0.5;
- inkSplatter.vy += _plane.vy * 0.5;
- _fxObjects.push(inkSplatter);
- }
- Engine.Instance.setPopupMessage(CopyBank.Instance.Ink);
- }
- }
- }
-
- public function registerObjectivePoint(type:String) : *
- {
- var i:Number = NaN;
- var totalCount:Number = NaN;
- var typeFound:Boolean = false;
- i = 0;
- totalCount = 0;
- typeFound = false;
- for(i = 0; i < _missionDetails.GoalParamaters.length; i++)
- {
- if(_missionDetails.GoalParamaters[i].Type == type)
- {
- typeFound = true;
- --_missionDetails.GoalParamaters[i].Count;
- totalCount += _missionDetails.GoalParamaters[i].Count;
- }
- }
- if(totalCount <= 0 && typeFound)
- {
- _bonusScore = 0;
- _bonusScore += _plane.Life / 100 * ((Engine.Instance.Difficulty + 1) / 5 * 100000);
- trace("bonus score from life: " + _bonusScore + " ((" + String(_plane.Life / 100) + "))" + String(Engine.Instance.Difficulty / 5) + "))");
- _bonusScore += _plane.Fuel / 100 * ((Engine.Instance.Difficulty + 1) / 5 * 75000);
- trace("bonus score from fuel: " + String(_plane.Fuel / 100 * ((Engine.Instance.Difficulty + 1) / 5 * 25000)));
- _bonusScore = Math.floor(_bonusScore);
- if(_repeatMissions)
- {
- _bonusScore += 500000;
- }
- fireTrackItems();
- Engine.Instance.missionComplete();
- Engine.Instance.setPopupMessage(CopyBank.Instance.MissionComplete);
- }
- }
-
- public function get Con() : Object
- {
- return CON;
- }
-
- private function getDistance(sx:Number, sy:Number, tx:Number, ty:Number) : *
- {
- var dx:* = undefined;
- var dy:* = undefined;
- var dist:Number = NaN;
- dx = Math.abs(sx - tx);
- dy = Math.abs(sy - ty);
- dist = Math.sqrt(dx * dx + dy * dy);
- if(!isNaN(dist))
- {
- return dist;
- }
- return 0;
- }
-
- public function initMissionElements(missionNumber:Number) : *
- {
- var i:Number = NaN;
- var levelData:* = undefined;
- i = 0;
- if(missionNumber != 1)
- {
- clearMissionElements();
- }
- if(missionNumber > 16)
- {
- Engine.Instance.setPopupMessage(CopyBank.Instance.AllMissionsDone);
- missionNumber = Math.floor(Math.random() * 2.99) + 14;
- _repeatMissions = true;
- }
- switch(missionNumber)
- {
- case 1:
- _repeatMissions = false;
- levelData = new Level_01();
- levelData.buildLevel();
- Main.Instance.Tracker.trackPageview("NATM2_Flight/game/level/01");
- break;
- case 2:
- levelData = new Level_02();
- levelData.buildLevel();
- Main.Instance.Tracker.trackPageview("NATM2_Flight/game/level/02");
- break;
- case 3:
- levelData = new Level_03();
- levelData.buildLevel();
- Main.Instance.Tracker.trackPageview("NATM2_Flight/game/level/03");
- break;
- case 4:
- levelData = new Level_04();
- levelData.buildLevel();
- Main.Instance.Tracker.trackPageview("NATM2_Flight/game/level/04");
- break;
- case 5:
- levelData = new Level_05();
- levelData.buildLevel();
- Main.Instance.Tracker.trackPageview("NATM2_Flight/game/level/05");
- break;
- case 6:
- levelData = new Level_06();
- levelData.buildLevel();
- Main.Instance.Tracker.trackPageview("NATM2_Flight/game/level/06");
- break;
- case 7:
- levelData = new Level_07();
- levelData.buildLevel();
- Main.Instance.Tracker.trackPageview("NATM2_Flight/game/level/07");
- break;
- case 8:
- levelData = new Level_08();
- levelData.buildLevel();
- Main.Instance.Tracker.trackPageview("NATM2_Flight/game/level/08");
- break;
- case 9:
- levelData = new Level_09();
- levelData.buildLevel();
- Main.Instance.Tracker.trackPageview("NATM2_Flight/game/level/09");
- break;
- case 10:
- levelData = new Level_10();
- levelData.buildLevel();
- Main.Instance.Tracker.trackPageview("NATM2_Flight/game/level/10");
- break;
- case 11:
- levelData = new Level_11();
- levelData.buildLevel();
- Main.Instance.Tracker.trackPageview("NATM2_Flight/game/level/11");
- break;
- case 12:
- levelData = new Level_12();
- levelData.buildLevel();
- Main.Instance.Tracker.trackPageview("NATM2_Flight/game/level/12");
- break;
- case 13:
- levelData = new Level_13();
- levelData.buildLevel();
- Main.Instance.Tracker.trackPageview("NATM2_Flight/game/level/13");
- break;
- case 14:
- levelData = new Level_14();
- levelData.buildLevel();
- if(!_repeatMissions)
- {
- Main.Instance.Tracker.trackPageview("NATM2_Flight/game/level/14");
- }
- else
- {
- Main.Instance.Tracker.trackPageview("NATM2_Flight/game/level/14_repeated");
- }
- break;
- case 15:
- levelData = new Level_15();
- levelData.buildLevel();
- if(!_repeatMissions)
- {
- Main.Instance.Tracker.trackPageview("NATM2_Flight/game/level/15");
- }
- else
- {
- Main.Instance.Tracker.trackPageview("NATM2_Flight/game/level/15_repeated");
- }
- break;
- case 16:
- levelData = new Level_16();
- levelData.buildLevel();
- if(!_repeatMissions)
- {
- Main.Instance.Tracker.trackPageview("NATM2_Flight/game/level/16");
- }
- else
- {
- Main.Instance.Tracker.trackPageview("NATM2_Flight/game/level/16_repeated");
- }
- }
- _planeShadow.vis = true;
- _endLife = false;
- _endLifeTimer = 0;
- }
-
- public function generateCagePieces(obj:*) : *
- {
- var cagePiece:* = undefined;
- cagePiece = new CagePiece(BitmapLibrary.Stills.DYN_CagePiece_Back);
- cagePiece.x = obj.x;
- cagePiece.y = obj.y;
- cagePiece.z = obj.z;
- _fxObjects.push(cagePiece);
- cagePiece = new CagePiece(BitmapLibrary.Stills.DYN_CagePiece_Front);
- cagePiece.x = obj.x;
- cagePiece.y = obj.y;
- cagePiece.z = obj.z;
- _fxObjects.push(cagePiece);
- cagePiece = new CagePiece(BitmapLibrary.Stills.DYN_CagePiece_Lock);
- cagePiece.x = obj.x;
- cagePiece.y = obj.y;
- cagePiece.z = obj.z;
- _fxObjects.push(cagePiece);
- cagePiece = new CagePiece(BitmapLibrary.Stills.DYN_CagePiece_Side);
- cagePiece.x = obj.x;
- cagePiece.y = obj.y;
- cagePiece.z = obj.z;
- _fxObjects.push(cagePiece);
- cagePiece = new CagePiece(BitmapLibrary.Stills.DYN_CagePiece_Side);
- cagePiece.x = obj.x;
- cagePiece.y = obj.y;
- cagePiece.z = obj.z;
- _fxObjects.push(cagePiece);
- cagePiece = new CagePiece(BitmapLibrary.Stills.DYN_CagePiece_Top);
- cagePiece.x = obj.x;
- cagePiece.y = obj.y;
- cagePiece.z = obj.z;
- _fxObjects.push(cagePiece);
- }
-
- public function generateKeyExplosion(obj:*) : *
- {
- var i:* = undefined;
- var spark:* = undefined;
- for(i = 0; i < 50; i++)
- {
- if(Math.random() < 0.75)
- {
- spark = new SparkSmall();
- }
- else
- {
- spark = new Spark2();
- }
- spark.x = obj.x + 30;
- spark.y = obj.y + 18;
- spark.z = obj.z;
- spark.vx = Math.random() * 4 - 2;
- spark.vy = Math.random() * 11 - 12;
- spark.s = 1.5 + Math.random() * 7;
- _fxObjects.push(spark);
- }
- }
-
- public function killPlane() : *
- {
- _endLife = true;
- _plane.vis = false;
- _planeShadow.vis = false;
- }
-
- private function getGameplayDistance(obj:*) : *
- {
- var oX:Number = NaN;
- var pX:Number = NaN;
- oX = obj.x + -_sceneCamera.CamLoc.x * obj.z;
- pX = _plane.x + -_sceneCamera.CamLoc.x * _plane.z;
- return Math.abs(oX - pX);
- }
-
- private function onWorldSceneEnterFrame(event:*) : *
- {
- var i:int = 0;
- var j:int = 0;
- var len:int = 0;
- var obj:Object = null;
- var d:Number = NaN;
- var scoreObj:ScoreObject = null;
- var minDist:Number = NaN;
- var dist:Number = NaN;
- var o:Number = NaN;
- var smokePuff:* = undefined;
- if(Engine.Instance.State == Engine.Instance.STATES.Gameplay)
- {
- if(_endLife)
- {
- ++_endLifeTimer;
- if(_endLifeTimer > 130)
- {
- Engine.Instance.addLives(-1);
- if(Engine.Instance.Lives >= 0)
- {
- trace("respawn called from here");
- respawn();
- }
- else
- {
- Main.Instance.stopPropeller();
- }
- }
- }
- i = 0;
- j = 0;
- minDist = 5000000;
- for(i = 0; i < _gameplayObjects.length; i++)
- {
- obj = _gameplayObjects[i];
- if(_missionDetails.GoalParamaters[0].Count > 0)
- {
- if(obj is TabletPiece)
- {
- dist = getGameplayDistance(obj);
- if(dist < minDist)
- {
- minDist = dist;
- }
- _hintTarget = obj;
- }
- if(obj is GoalRing && !obj.Collected)
- {
- dist = getGameplayDistance(obj);
- if(dist < minDist)
- {
- minDist = dist;
- }
- _hintTarget = obj;
- }
- if(obj is Cage1 && !obj.Hit)
- {
- dist = getGameplayDistance(obj);
- if(dist < minDist)
- {
- minDist = dist;
- }
- _hintTarget = obj;
- }
- }
- else
- {
- _hintTarget = null;
- _hintTimer = 0;
- }
- if(obj != _plane)
- {
- if(obj.AuditMeter >= obj.AuditThreshhold)
- {
- destroyObject(obj,_gameplayObjects);
- }
- if(obj.CollisionMethod == obj.CMethods.Radial)
- {
- if(obj is Bomb)
- {
- for(j = 0; j < _cages.length; j++)
- {
- d = getDistance(obj.x,obj.y,_cages[j].x,_cages[j].y);
- if(d < 40 && !_cages[j].Hit)
- {
- queueTrackItem("CagesBombed");
- _cages[j].hit();
- generateKeyExplosion(obj);
- Engine.Instance.addScore(SCORE.CAGE);
- Main.Instance.playSound("keyCage");
- registerObjectivePoint("Cage");
- scoreObj = new ScoreObject(SCORE.CAGE);
- scoreObj.s = 2;
- scoreObj.x = _cages[j].x;
- scoreObj.y = _cages[j].y;
- scoreObj.z = _cages[j].z;
- scoreObj.vy = -1.45;
- _fxObjects.push(scoreObj);
- }
- }
- for(j = 0; j < _indians.length; j++)
- {
- d = getDistance(obj.x,obj.y,_indians[j].x,_indians[j].y);
- if(d < 45 && !_indians[j].Hit)
- {
- _indians[j].hit();
- queueTrackItem("IndiansBombed");
- generateKeyExplosion(obj);
- Engine.Instance.addScore(SCORE.INDIAN);
- scoreObj = new ScoreObject(SCORE.INDIAN);
- scoreObj.s = 0.7;
- scoreObj.x = _indians[j].x;
- scoreObj.y = _indians[j].y;
- scoreObj.z = _indians[j].z;
- scoreObj.vy = -1.45;
- _fxObjects.push(scoreObj);
- }
- }
- }
- }
- }
- if(obj.AuditMeter <= 10)
- {
- obj.fStep();
- }
- }
- if(Math.abs(minDist) > 600)
- {
- ++_hintTimer;
- }
- else if(_hintTimer > 0)
- {
- --_hintTimer;
- }
- if(_hintTimer > 100)
- {
- _hintTimer = -100;
- setGoalHint();
- }
- for(i = 0; i < _motionObjects.length; i++)
- {
- _motionObjects[i].fStep();
- }
- for(i = 0; i < _tentacleObjects.length; i++)
- {
- _tentacleObjects[i].fStep();
- }
- for(i = 0; i < _fxObjects.length; i++)
- {
- obj = _fxObjects[i];
- obj.fStep();
- if(obj.AuditMeter >= 10)
- {
- destroyObject(obj,_fxObjects);
- }
- }
- _planeShadow.x = _plane.x;
- _planeShadow.y = 600;
- o = _plane.y / 1300;
- if(o < 0)
- {
- o = 0;
- }
- if(o > 1)
- {
- o = 1;
- }
- _planeShadow.Opacity = o;
- _planeShadow.yflip = -0.3;
- _planeShadow.r = _plane.r;
- if(Math.random() > 0.45 && _plane.vis)
- {
- if(_plane.TempDamage > 1 && Math.random() > 0.5)
- {
- smokePuff = new SmokePuff2();
- }
- else if(_plane.Life < 100 && Math.random() * 100 > (_plane.Life + 100) / 2)
- {
- smokePuff = new SmokePuff2();
- }
- else
- {
- smokePuff = new SmokePuff();
- }
- smokePuff.x = _plane.x - _plane.vx;
- smokePuff.y = _plane.y - _plane.vy + 15;
- _fxObjects.push(smokePuff);
- }
- for(i = 0; i < _purgeArray.length; i++)
- {
- obj = _purgeArray[i];
- destroyObject(obj,_gameplayObjects);
- }
- _purgeArray = new Array();
- _sceneCamera.updateDisplay();
- }
- }
-
- public function get SceneryMGObjects() : Array
- {
- return _sceneryMGObjects;
- }
-
- public function addMotionObject(obj:*) : *
- {
- _motionObjects.push(obj);
- }
-
- private function destroyObject(obj:*, sourceArray:Array) : *
- {
- var i:* = undefined;
- for(i = 0; i < sourceArray.length; i++)
- {
- if(sourceArray[i] == obj)
- {
- sourceArray.splice(i,1);
- break;
- }
- }
- }
-
- public function clearFX(obj:*) : *
- {
- destroyObject(obj,_fxObjects);
- }
-
- public function get GameplayObjects() : Array
- {
- return _gameplayObjects;
- }
- }
- }
-